জাভাস্ক্রিপ্ট ফাংশন এপ্লাই (JS Function Apply)

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট ফাংশন (JS Function) |
412
412

জাভাস্ক্রিপ্টে apply একটি শক্তিশালী মেথড যা ফাংশনের this কনটেক্সট নির্দিষ্ট করে এবং একটি অ্যারে বা অ্যারের মত অবজেক্টের আর্গুমেন্টের মাধ্যমে ফাংশন কল করতে ব্যবহৃত হয়। এটি বিশেষ করে তখন উপকারী যখন আপনি ডাইনামিক্যালি ফাংশনের আর্গুমেন্টগুলি নির্ধারণ করতে চান।


apply মেথড কি?

apply মেথডটি Function.prototype এর একটি মেথড, যা যেকোনো ফাংশনের সাথে ব্যবহার করা যেতে পারে। এটি একটি ফাংশনকে নির্দিষ্ট this মান সহ কল করতে এবং আর্গুমেন্টগুলিকে একটি অ্যারে বা অ্যারের মত অবজেক্ট হিসেবে পাস করতে দেয়।

সিনট্যাক্স:

functionName.apply(thisArg, [argsArray]);
  • functionName: যে ফাংশনটি কল করতে চান।
  • thisArg: ফাংশনের this কনটেক্সট নির্ধারণ করে।
  • argsArray: একটি অ্যারে বা অ্যারের মত অবজেক্ট, যা ফাংশনের আর্গুমেন্ট হিসেবে পাস করা হয়।

apply এবং call এর মধ্যে পার্থক্য

apply এবং call উভয়ই ফাংশনকে নির্দিষ্ট this কনটেক্সটে কল করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে মূল পার্থক্য হলো আর্গুমেন্ট পাস করার পদ্ধতি:

  • call: আর্গুমেন্টগুলি আলাদাভাবে পাস করা হয়।

    function greet(greeting, punctuation) {
        console.log(`${greeting}, ${this.name}${punctuation}`);
    }
    
    const person = { name: "Alice" };
    
    greet.call(person, "Hello", "!");  // আউটপুট: Hello, Alice!
    
  • apply: আর্গুমেন্টগুলি একটি অ্যারের মাধ্যমে পাস করা হয়।

    function greet(greeting, punctuation) {
        console.log(`${greeting}, ${this.name}${punctuation}`);
    }
    
    const person = { name: "Bob" };
    
    greet.apply(person, ["Hi", "."]);  // আউটপুট: Hi, Bob.
    

মূল পার্থক্য:

  • আর্গুমেন্ট পাসিং: call এ আর্গুমেন্টগুলি আলাদা আলাদা পাস করতে হয়, যেখানে apply এ একটি অ্যারে বা অ্যারের মত অবজেক্ট ব্যবহার করে একসাথে পাস করতে হয়।

apply মেথডের উদাহরণ

উদাহরণ ১: ম্যাথ মেথডের সাথে ব্যবহার

Math.max ফাংশনটি একটি সংখ্যার তালিকার মধ্যে সর্বোচ্চ মান নির্ধারণ করে। যদি আপনার কাছে একটি অ্যারে থাকে, তাহলে apply ব্যবহার করে আপনি সহজেই সর্বোচ্চ মান পেতে পারেন।

const numbers = [5, 6, 2, 3, 7];

// Math.max ব্যবহার করে সর্বোচ্চ সংখ্যা খুঁজে বের করা
const max = Math.max.apply(null, numbers);
console.log(max);  // আউটপুট: 7

ব্যাখ্যা: এখানে, Math.max ফাংশনটিকে apply ব্যবহার করে কল করা হয়েছে এবং numbers অ্যারে কে আর্গুমেন্ট হিসেবে পাস করা হয়েছে। thisArg হিসেবে null ব্যবহার করা হয়েছে কারণ Math.max এর জন্য this এর প্রয়োজন নেই।

উদাহরণ ২: ফাংশনের this কনটেক্সট পরিবর্তন করা

const person = {
    name: "Charlie",
    greet: function(greeting) {
        console.log(`${greeting}, my name is ${this.name}.`);
    }
};

const anotherPerson = { name: "Dave" };

// `greet` মেথডটিকে `anotherPerson` এর কনটেক্সটে কল করা
person.greet.apply(anotherPerson, ["Hi"]);  // আউটপুট: Hi, my name is Dave.

ব্যাখ্যা: এখানে, person.greet ফাংশনটি apply ব্যবহার করে anotherPerson এর কনটেক্সটে কল করা হয়েছে। ফলে, this.name anotherPerson এর name প্রপার্টি নির্দেশ করে।

উদাহরণ ৩: ফাংশনের আর্গুমেন্ট ডাইনামিক্যালি পাস করা

function sum(a, b, c) {
    return a + b + c;
}

const numbers = [1, 2, 3];

// `sum` ফাংশনটি `apply` ব্যবহার করে কল করা
const result = sum.apply(null, numbers);
console.log(result);  // আউটপুট: 6

ব্যাখ্যা: এখানে, sum ফাংশনটি apply ব্যবহার করে কল করা হয়েছে এবং numbers অ্যারে কে আর্গুমেন্ট হিসেবে পাস করা হয়েছে। thisArg হিসেবে null ব্যবহার করা হয়েছে কারণ sum ফাংশনের জন্য this এর প্রয়োজন নেই।


apply মেথডের ব্যবহার ক্ষেত্র

১. ম্যাথ ফাংশনগুলির সাথে কাজ করা

Math.max, Math.min ইত্যাদি ফাংশনগুলি অ্যারে সহ কাজ করতে apply মেথডটি অত্যন্ত উপকারী।

২. ফাংশনের কনটেক্সট পরিবর্তন করা

অবজেক্টের মেথডকে অন্য অবজেক্টের কনটেক্সটে কল করতে apply ব্যবহার করা যায়।

৩. আর্গুমেন্টের সংখ্যা ডাইনামিক করা

যখন ফাংশনের আর্গুমেন্টের সংখ্যা পূর্বনির্ধারিত না থাকে, তখন apply ব্যবহার করে একটি অ্যারে থেকে আর্গুমেন্ট পাস করা সহজ হয়।


apply এর সীমাবদ্ধতা

  • পারফরম্যান্স: বড় অ্যারের ক্ষেত্রে apply ব্যবহার করলে পারফরম্যান্সে প্রভাব পড়তে পারে, কারণ এটি অ্যারের সমস্ত উপাদানকে আলাদাভাবে প্রক্রিয়া করে।
  • নির্দিষ্ট সীমা: কিছু ব্রাউজারে apply মেথডের আর্গুমেন্টের সংখ্যায় সীমা থাকতে পারে, যা অ্যারে অত্যধিক বড় হলে সমস্যা সৃষ্টি করতে পারে।

সারাংশ

জাভাস্ক্রিপ্টে apply মেথডটি ফাংশনের this কনটেক্সট নির্ধারণ এবং একটি অ্যারে বা অ্যারের মত অবজেক্টের আর্গুমেন্টের মাধ্যমে ফাংশন কল করার জন্য ব্যবহৃত হয়। এটি বিশেষ করে ম্যাথ ফাংশনগুলির সাথে কাজ করার সময় এবং ফাংশনের কনটেক্সট পরিবর্তন করার ক্ষেত্রে অত্যন্ত উপকারী। call মেথডের মতোই, apply ও ফাংশন কলের সময় this এর মান নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে। তবে, এর কিছু সীমাবদ্ধতা রয়েছে, যেমন পারফরম্যান্স এবং আর্গুমেন্টের সংখ্যায় সীমা, যা বিবেচনা করা উচিত।

টিপস:

  • যখন ফাংশনের আর্গুমেন্টগুলি একটি অ্যারে আকারে থাকে, তখন apply ব্যবহার করা সহজ।
  • ছোট এবং মধ্যম আকারের অ্যারের জন্য apply ভালোভাবে কাজ করে।
  • বড় অ্যারের জন্য spread অপারেটর (...) ব্যবহার করা যেতে পারে, যা আধুনিক জাভাস্ক্রিপ্টে একটি ভালো বিকল্প।

অতিরিক্ত উদাহরণ: apply এর সাথে bind ব্যবহার

bind মেথডের মাধ্যমে একটি নতুন ফাংশন তৈরি করা যায় যা নির্দিষ্ট this কনটেক্সটে কল করা হয়, এবং apply এর মাধ্যমে সেই ফাংশনটি কল করা যায়।

const person = {
    name: "Eve",
    introduce: function(city, country) {
        console.log(`Hi, I'm ${this.name} from ${city}, ${country}.`);
    }
};

const anotherPerson = { name: "Frank" };

// `introduce` ফাংশনটিকে `anotherPerson` এর কনটেক্সটে `bind` করে একটি নতুন ফাংশন তৈরি করা
const introduceFrank = person.introduce.bind(anotherPerson);

// `apply` ব্যবহার করে `introduceFrank` ফাংশন কল করা
introduceFrank.apply(null, ["New York", "USA"]);  // আউটপুট: Hi, I'm Frank from New York, USA.

ব্যাখ্যা: এখানে, person.introduce ফাংশনটি anotherPerson এর কনটেক্সটে bind করা হয়েছে, যা একটি নতুন ফাংশন introduceFrank তৈরি করে। এরপর, introduceFrank ফাংশনটি apply ব্যবহার করে কল করা হয়েছে এবং আর্গুমেন্টগুলি একটি অ্যারে হিসেবে পাস করা হয়েছে।


apply মেথডটি জাভাস্ক্রিপ্টে ফাংশন কলের সময় this কনটেক্সট নির্ধারণ এবং অ্যারের মাধ্যমে আর্গুমেন্ট পাস করার জন্য একটি কার্যকর পদ্ধতি। এর মাধ্যমে ফাংশনগুলিকে আরও নমনীয় এবং পুনরায় ব্যবহারযোগ্য করা যায়, যা কোডের সংগঠন এবং কার্যকারিতা বৃদ্ধি করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion